package org.lh.ibernate.utils;


import org.lh.ibernate.annotation.Query;
import org.lh.ibernate.config.DbConfig;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;


//专门存放项目里面的到接口内容
public class DaoFactory {

    private static ConcurrentHashMap<String,Object> daoMap=new ConcurrentHashMap<String,Object>();
    private static ConcurrentHashMap<String,Map<String,Object>> methodMap=new ConcurrentHashMap<String,Map<String,Object>>();


//    //扫描所有的dao
//    public static void scanDao() throws IOException {
//        ClassTools ct=new ClassTools();
//        Set<Class<?>> set=ct.getClasses(DbConfig.DAO_PLACE);
//        for (Class<?> aClass : set) {
//            if(aClass.isAnnotationPresent(Mapper.class)) {
//                daoMap.put(aClass.getName(),null);
//                Method[] methods = aClass.getMethods();
//                for (Method method : methods) {
//                    method.setAccessible(true);
//                    //获取到所有的查询方法
//                    if (method.isAnnotationPresent(Query.class)) {
//                        System.out.println(method.getName());
//                        Parameter parameterArr[]=method.getParameters();
//                        for (Parameter parameter : parameterArr) {
//                            //通过反射，获取方法里面的带有注解的参数
//                            Annotation[] annotations=parameter.getDeclaredAnnotationsByType(Param.class);
//                            for (Annotation annotation : annotations) {
//                                Param param= (Param) annotation;
//                                System.out.println(param.name());
//                            }
//                        }
//                    }
//                }
//            }
//        }
//    }


}
